home *** CD-ROM | disk | FTP | other *** search
- PAGE 55,132
-
- DATA SEGMENT PARA
- VAR1 DW 4
- VAR2 DB 5
- RES DW ?
- DATA ENDS
-
- STACK SEGMENT STACK
- DW 10 DUP(?)
- STACK ENDS
-
-
- CODE SEGMENT PARA
- ASSUME CS:CODE,DS:DATA,SS:STACK
-
- ORG 100H
-
- START: MOV AX,VAR1 ; DATA MOVED FROM DATA SEGMENT TO REGISTER
- PUSH AX ; CONTENTS MOVED TO STACK
- PUSH DS ; PUSH DATA SEGMENT ADDRESS TO STACK
- PUSHF ; PUSH FLAG REGISTER ON STACK
-
- SUB AX,4 ; ALTER FLAGS
- POPF ; POP OUT OLD FLAGS
-
- MOV DS,CX ; CHANGE DS VALUE
- POP DS ; RESTORE OLD VALUE
-
- POP AX ; POP VAR1 BACK TO AX
-
- CALL ODDENDS
-
- MOV AL,VAR2
- PUSH DS
- CALL TRANSLATE
- POP DS
- NOP
-
- ODDENDS PROC NEAR
-
- XCHG BX,AX ; XCHANGE AX <---> BX
- STC ; SET CARRY
- CLD ; CLEAR DIRECTION
- CLI ; CLEAR INTERRUPT
- LAHF ; LOAD FLAGS INTO AH
- RET
- ODDENDS ENDP
-
- TRANSLATE PROC NEAR
- ; ASSUME AL CONTAINS CODE READ IN
-
- LDS BX,CS:TAB_POINTER
- XLAT CS:XMIT_TABLE ;M(BX+AL) --> AL
- RET
-
- TAB_POINTER DD XMIT_TABLE
- XMIT_TABLE DB '5791368024'
-
- TRANSLATE ENDP
-
- CODE ENDS
- END START
-